package game.sprite.collision;

import game.userinteraction.IUpdatable;

/**
 * Defines an interface that all CollisionManagers should
 * share. 
 * @author Paul
 * 
 */

// Since I added the IUpdatable interface, I'm not sure if 
// this interface is really necessary.

public interface ICollisionManager extends IUpdatable {

    /**
     * Checks its collidable objects for potential
     * collisions. Applies the physics necessary to
     * simulate any occuring collisions.
     */
    void update ();

    /**
     * Adds an object to the group that this
     * collision manager will check for collisions.
     * 
     * @param collidable The object to be added
     *        to the CollisionManger
     */
    void add (ICollidable collidable);

    /**
     * Removes an object currently registered with
     * the CollisionManager.
     * 
     * @param toRemove The object to be removed.
     */
    void remove (ICollidable toRemove);

}
